From: Jasper St. Pierre Date: Sun, 4 Nov 2012 15:55:37 +0000 (-0500) Subject: workspace: Add smooth scrolling support to zoom windows X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5182 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=770ff19313b820a34ee15246028452744a4cf117;p=gnome-shell.git workspace: Add smooth scrolling support to zoom windows https://bugzilla.gnome.org/show_bug.cgi?id=687573 --- diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 25877b20b..c026da8c4 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -260,23 +260,37 @@ const WindowClone = new Lang.Class({ _onScroll : function (actor, event) { let direction = event.get_scroll_direction(); - if (direction == Clutter.ScrollDirection.UP) { + let delta; + + if (event.is_pointer_emulated()) + return; + + if (direction == Clutter.ScrollDirection.DOWN) { + delta = -SCROLL_SCALE_AMOUNT; + } else if (direction == Clutter.ScrollDirection.UP) { + delta = +SCROLL_SCALE_AMOUNT; + } else if (direction == Clutter.ScrollDirection.SMOOTH) { + let [dx, dy] = event.get_scroll_delta(); + delta = -dy * 10; + } + + if (delta > 0) { if (this._zoomStep == undefined) this._zoomStart(); if (this._zoomStep < 100) { - this._zoomStep += SCROLL_SCALE_AMOUNT; + this._zoomStep += delta; + this._zoomStep = Math.min(100, this._zoomStep); this._zoomUpdate(); } - } else if (direction == Clutter.ScrollDirection.DOWN) { + } else if (delta < 0) { if (this._zoomStep > 0) { - this._zoomStep -= SCROLL_SCALE_AMOUNT; + this._zoomStep += delta; this._zoomStep = Math.max(0, this._zoomStep); this._zoomUpdate(); } if (this._zoomStep <= 0.0) this._zoomEnd(); } - }, _zoomUpdate : function () {